package com.ken.zeratul.i18n.config;

import com.alibaba.cloud.nacos.NacosConfigManager;
import com.ken.zeratul.i18n.source.base.NacosResourceMessageSource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 国际化相关配置类
 */
@Configuration
@Slf4j
@RefreshScope
public class I18nConfiguration {

    /**
     * 国际化管理的配置格式，默认为json
     *   支持：json、properties两种
     */
    @Value("${language.format:json}")
    private String configFormat;

    @Autowired
    private NacosConfigManager nacosConfigManager;

    @Value("${spring.cloud.nacos.config.group}")
    private String groupName;

    /**
     * 基于Nacos的国际化消息来源
     * @return
     */
    @Bean(initMethod = "init")
    @RefreshScope
    public NacosResourceMessageSource messageSource() {
        NacosResourceMessageSource messageSource = NacosResourceMessageSource.getInstance(configFormat);
        //项目模块使用language来命名国际化文件，message为二开库默认的国际化文件
        messageSource.addBasenames("message");
        messageSource.setDefaultEncoding("UTF-8");
        //设置nacos管理器
        messageSource.setNacosConfigManager(nacosConfigManager);
        //设置读取的组名称，可以添加多个组名，先添加的组名读取到的配置的优先级越高（同名的配置，优先级高的会覆盖优先级低的配置）
        messageSource.addGroupName(groupName);
        return messageSource;
    }
}
